package com.relytosoft.mizar.analyze.structure.api.pojo.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.relytosoft.dubhe.common.core.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * @Author: zyc
 * @version: v1.0
 * @description: com.relytosoft.mizar.analyze.structure.api.pojo.dto
 * @Date: 2022/5/18 17:02
 */
@ApiModel("AyStructureDispositionDto")
public class AyStructureDispositionDto extends BaseEntity {
    private static final long serialVersionUID = 1L;


    /**
     * 主键
     */
    @ApiModelProperty(value = "ID")
    private Integer id;

    @ApiModelProperty(value = "布控id")
    private Integer dispositionId;

    /**
     * 布控任务名称
     */
    @ApiModelProperty(value = "布控任务名称", required = true)
    @NotBlank(message = "布控任务名称不能为空")
    private String name;

    /**
     * 布控类型;1：条件（文本）,2：图片,3：车辆库
     */
    @ApiModelProperty(value = "布控类型;1：条件（文本），2：图片3：车辆库", required = true)
    @NotNull(message = "布控类型;1：条件（文本），2：图片，3：车辆库;不能为空")
    private Integer dispositionType;

    /**
     * 布控方式;1-人/2-机动车/3-非机动车
     */
    @ApiModelProperty(value = "布控方式;1-人,2-机动车,3-非机动车", required = true)
    @NotNull(message = "布控方式;1-人,2-机动车,3-非机动车;不能为空")
    private Integer dispositionCategory;

    /**
     * 布控范围视频源;多个以英文分号隔开
     */
    @ApiModelProperty(value = "布控范围视频源;多个以英文分号隔开", required = true)
    @NotBlank(message = "布控范围视频源;多个以英文分号隔开不能为空")
    private String dispositionRangeDevice;


    /**
     * 告警信息第三方接受URL
     */
    @ApiModelProperty(value = "告警信息第三方接受URL")
    private String receiveUrl;

    /**
     * 布控-文本条件;json字符串
     */
    @ApiModelProperty(value = "布控-文本条件;json字符串")
    private String dispositionText;

    /**
     * 布控-图片条件;json字符串
     */
    @ApiModelProperty(value = "布控-图片条件;json字符串")
    private String dispositionImage;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 车辆库;多个以英文分号隔开
     */
    @ApiModelProperty(value = "车辆库;多个以英文分号隔开")
    @TableField("VEHICLE_GROUP")
    private String vehicleGroup;

    /**
     * 临时车辆库;多个以英文分号隔开
     */
    @ApiModelProperty(value = "临时车辆库;多个以英文分号隔开")
    @TableField("TEMP_VEHICLE_GROUP")
    private String tempVehicleGroup;

    /**
     * 临时名单生效开始时间
     */
    @ApiModelProperty(value = "临时名单生效开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime tempBeginTime;

    /**
     * 临时名单生效结束时间
     */
    @ApiModelProperty(value = "临时名单生效结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime tempEndTime;

    /**
     * 布控状态;0：未开始，1：布控中，2：已结束，3：异常
     */
    @ApiModelProperty(value = "布控状态;0：未开始，1：布控中，2：已结束，3：异常")
    @NotNull(message = "布控状态;0：未开始，1：布控中，2：已结束，3：异常不能为空")
    private Integer status;

    /**
     * 布防状态;0-未布防 1-布防中
     */
    @ApiModelProperty(value = "布防状态;0-未布防 1-布防中")
    private Integer defenseStatus;

    /**
     * 告警方式;0-未命中告警(白名单) 1-命中告警(黑名单)
     */
    @ApiModelProperty(value = "告警方式;0-未命中告警(白名单) 1-命中告警(黑名单)")
    private Integer alarmType;

    /**
     * 布控图片ID
     */
    @ApiModelProperty(value = "布控图片ID")
    @TableField("IMAGE_ID")
    private Integer imageId;

    /**
     * 布控图片地址
     */
    @ApiModelProperty(value = "布控图片地址")
    @TableField("IMAGE_URL")
    private String imageUrl;

    @TableField(exist = false)
    @ApiModelProperty(value = "计划模板ID")
    private Integer planTemplateId;

    /**
     * 计划类型;0：周计划  1：日计划（周一到周日计划相同） 2：全天
     */
    @ApiModelProperty(value = "计划类型;0：周计划 1：日计划（周一到周日计划相同） 2：全天")
    @TableField("PLAN_TYPE")
    private Integer planType;

    /**
     * 计划信息条数;取值范围如下： 周计划时：1～7 日计划时：1 全天：0
     */
    @ApiModelProperty(value = "计划信息条数;取值范围如下： 周计划时：1～7 日计划时：1 全天：0")
    @TableField("PLAN_INFO_NUM")
    private Integer planInfoNum;

    /**
     * 计划信息列表;(json数据) 周计划时最多7个计划时间信息 日计划时最多1个计划时间信息 全程录时无计划时间信息
     */
    @ApiModelProperty(value = "计划信息列表;(json数据) 周计划时最多7个计划时间信息 日计划时最多1个计划时间信息 全程录时无计划时间信息")
    @TableField("PLAN_INFO_NUM")
    private String planInfoList;

    public Integer getPlanTemplateId() {
        return planTemplateId;
    }

    public void setPlanTemplateId(Integer planTemplateId) {
        this.planTemplateId = planTemplateId;
    }


    public Integer getDispositionId() {
        return dispositionId;
    }

    public void setDispositionId(Integer dispositionId) {
        this.dispositionId = dispositionId;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * 获得布控任务名称
     */
    public String getName() {
        return this.name;
    }

    /**
     * 设置布控任务名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获得布控类型;1：条件（文本），2：图片 3：车辆库
     */
    public Integer getDispositionType() {
        return this.dispositionType;
    }

    /**
     * 设置布控类型;1：条件（文本），2：图片 3：车辆库
     */
    public void setDispositionType(Integer dispositionType) {
        this.dispositionType = dispositionType;
    }

    /**
     * 获得布控方式;人/机动车/非机动车
     */
    public Integer getDispositionCategory() {
        return this.dispositionCategory;
    }

    /**
     * 设置布控方式;人/机动车/非机动车
     */
    public void setDispositionCategory(Integer dispositionCategory) {
        this.dispositionCategory = dispositionCategory;
    }

    /**
     * 获得布控范围视频源;多个以英文分号隔开
     */
    public String getDispositionRangeDevice() {
        return this.dispositionRangeDevice;
    }

    /**
     * 设置布控范围视频源;多个以英文分号隔开
     */
    public void setDispositionRangeDevice(String dispositionRangeDevice) {
        this.dispositionRangeDevice = dispositionRangeDevice;
    }


    /**
     * 获得告警信息第三方接受URL
     */
    public String getReceiveUrl() {
        return this.receiveUrl;
    }

    /**
     * 设置告警信息第三方接受URL
     */
    public void setReceiveUrl(String receiveUrl) {
        this.receiveUrl = receiveUrl;
    }

    /**
     * 获得布控-文本条件;json字符串
     */
    public String getDispositionText() {
        return this.dispositionText;
    }

    /**
     * 设置布控-文本条件;json字符串
     */
    public void setDispositionText(String dispositionText) {
        this.dispositionText = dispositionText;
    }

    /**
     * 获得布控-图片条件;json字符串
     */
    public String getDispositionImage() {
        return this.dispositionImage;
    }

    /**
     * 设置布控-图片条件;json字符串
     */
    public void setDispositionImage(String dispositionImage) {
        this.dispositionImage = dispositionImage;
    }

    /**
     * 获得备注
     */
    public String getRemark() {
        return this.remark;
    }

    /**
     * 设置备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * 获得车辆库;多个以英文分号隔开
     */
    public String getVehicleGroup() {
        return this.vehicleGroup;
    }

    /**
     * 设置车辆库;多个以英文分号隔开
     */
    public void setVehicleGroup(String vehicleGroup) {
        this.vehicleGroup = vehicleGroup;
    }

    /**
     * 获得临时车辆库;多个以英文分号隔开
     */
    public String getTempVehicleGroup() {
        return this.tempVehicleGroup;
    }

    /**
     * 设置临时车辆库;多个以英文分号隔开
     */
    public void setTempVehicleGroup(String tempVehicleGroup) {
        this.tempVehicleGroup = tempVehicleGroup;
    }

    /**
     * 获得临时名单生效开始时间
     */
    public LocalDateTime getTempBeginTime() {
        return this.tempBeginTime;
    }

    /**
     * 设置临时名单生效开始时间
     */
    public void setTempBeginTime(LocalDateTime tempBeginTime) {
        this.tempBeginTime = tempBeginTime;
    }

    /**
     * 获得临时名单生效结束时间
     */
    public LocalDateTime getTempEndTime() {
        return this.tempEndTime;
    }

    /**
     * 设置临时名单生效结束时间
     */
    public void setTempEndTime(LocalDateTime tempEndTime) {
        this.tempEndTime = tempEndTime;
    }

    /**
     * 获得布控状态;0：未开始，1：布控中，2：已结束，3：异常
     */
    public Integer getStatus() {
        return this.status;
    }

    /**
     * 设置布控状态;0：未开始，1：布控中，2：已结束，3：异常
     */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /**
     * 获得布防状态;0-已撤防 1-布防中
     */
    public Integer getDefenseStatus() {
        return this.defenseStatus;
    }

    /**
     * 设置布防状态;0-已撤防 1-布防中
     */
    public void setDefenseStatus(Integer defenseStatus) {
        this.defenseStatus = defenseStatus;
    }

    /**
     * 获得告警方式;0-未命中告警(白名单) 1-命中告警(黑名单)
     */
    public Integer getAlarmType() {
        return this.alarmType;
    }

    /**
     * 设置告警方式;0-未命中告警(白名单) 1-命中告警(黑名单)
     */
    public void setAlarmType(Integer alarmType) {
        this.alarmType = alarmType;
    }

    /**
     * 获得布控图片ID
     */
    public Integer getImageId() {
        return this.imageId;
    }

    /**
     * 设置布控图片ID
     */
    public void setImageId(Integer imageId) {
        this.imageId = imageId;
    }

    /**
     * 获得布控图片地址
     */
    public String getImageUrl() {
        return this.imageUrl;
    }

    /**
     * 设置布控图片地址
     */
    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }

    /**
     * 获得0：周计划 1：日计划（周一到周日计划相同） 2：全天
     */
    public Integer getPlanType() {
        return this.planType;
    }

    /**
     * 设置0：周计划 1：日计划（周一到周日计划相同） 2：全天
     */
    public void setPlanType(Integer planType) {
        this.planType = planType;
    }

    /**
     * 获得取值范围如下： 周计划时：1～7 日计划时：1 全天：0
     */
    public Integer getPlanInfoNum() {
        return this.planInfoNum;
    }

    /**
     * 设置取值范围如下： 周计划时：1～7 日计划时：1 全天：0
     */
    public void setPlanInfoNum(Integer planInfoNum) {
        this.planInfoNum = planInfoNum;
    }

    /**
     * 获得(json数据) 周计划时最多7个计划时间信息 日计划时最多1个计划时间信息 全程录时无计划时间信息
     */
    public String getPlanInfoList() {
        return this.planInfoList;
    }

    /**
     * 设置(json数据) 周计划时最多7个计划时间信息 日计划时最多1个计划时间信息 全程录时无计划时间信息
     */
    public void setPlanInfoList(String planInfoList) {
        this.planInfoList = planInfoList;
    }


    @Override
    public String toString() {
        return "AyStructureDisposition{,name=" + name +
                ",dispositionId" + dispositionId +
                ",dispositionType=" + dispositionType +
                ",dispositionCategory=" + dispositionCategory +
                ",dispositionRangeDevice=" + dispositionRangeDevice +
                ",receiveUrl=" + receiveUrl +
                ",dispositionText=" + dispositionText +
                ",dispositionImage=" + dispositionImage +
                ",remark=" + remark +
                ",vehicleGroup=" + vehicleGroup +
                ",tempVehicleGroup=" + tempVehicleGroup +
                ",tempBeginTime=" + tempBeginTime +
                ",tempEndTime=" + tempEndTime +
                ",status=" + status +
                ",defenseStatus=" + defenseStatus +
                ",alarmType=" + alarmType +
                ",imageId=" + imageId +
                ",imageUrl=" + imageUrl +
                ",createdId=" + createdId +
                ",createdBy=" + createdBy +
                ",createdTime=" + createdTime +
                ",updatedId=" + updatedId +
                ",updatedBy=" + updatedBy +
                ",updatedTime=" + updatedTime +
                "}";
    }
}
